package com.hn.project.rqinspect.mapper;

import com.hn.framework.web.dao.BaseMapper;
import com.hn.project.rqinspect.domain.database.TaskCheckRecord;
import com.hn.project.rqinspect.domain.dto.*;
import com.hn.project.rqinspect.domain.vo.QuesCheckRecordVo;
import com.hn.project.rqinspect.domain.vo.TaskCheckRecordVo;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface TaskCheckRecordMapper extends BaseMapper<TaskCheckRecord> {

    /**
     * 检查记录列表
     */
    List<TaskCheckRecordDto> listCheckRecordDto(TaskCheckRecordVo taskCheckRecordVo);

    /**
     * 检查记录详情
     */
    TaskCheckRecordDto getCheckRecordDto(Integer checkRecordId);

    /**
     *  更新记录提交状态
     */
    void submitTaskCheckRecord(@Param("taskRecordId") Integer taskRecordId, @Param("submitDate") Date submitDate);

    /**
     *  检查部位个数
     */
    Integer countCheckPartNum(@Param("taskRecordId")Integer taskRecordId,@Param("submitStatus") Integer submitStatus);

    /**
     *  检查部位不合格个数
     */
    Integer countCheckPartBadNum(@Param("taskRecordId")Integer taskRecordId,@Param("submitStatus") Integer submitStatus);

    /**
     * 根据网点ID 获取检查记录列表
     */
    List<TaskCheckRecord> listCheckRecordByBranchId(Integer branchId);

    /**
     * 根据网点ID 获取检查记录
     */
    TaskCheckRecord getCheckRecord(@Param("taskRecordId") Integer taskRecordId, @Param("branchPartId")Integer branchPartId);

    /**
     * 根据网点ID 和风险等级 统计记录
     */
    Integer countByRiskLevel(@Param("branchId")Integer branchId,@Param("riskLevel") Integer riskLevel);

    /**
     *  获取整改问题列表
     */
    List<TaskQuesCheckRecordDto> listAuditCheckRecord(@Param("branchIds") List<Integer> branchIds, @Param("auditStatus") Integer auditStatus);

    /**
     * 整改问题详情
     */
    TaskQuesCheckRecordDetailDto checkRecordDetail(Integer checkRecordId);

    /**
     * 根据网点id查询有问题的检查记录
     */
    List<QuesCheckRecordDto> listQuesCheckRecord(@Param("userId") Integer userId,
                                                 @Param("branchIds") List<Integer> branchIds,
                                                 @Param("taskType")Integer taskType,
                                                 @Param("followStatus") Integer followStatus);

    /**
     * 查询待整改问题获取已完成问题
     */
    Integer countQuesCheckRecord(QuesCheckRecordVo quesCheckRecordVo);

    /**
     *  统计部位总个数
     */
    Integer countTotalPartNum(@Param("branchId") Integer branchId,@Param("quesId") Integer quesId);

    /**
     *  统计完成部位个数
     */
    Integer countFinishPartNum(Integer taskRecordId);

    /**
     *  统计审核个数
     */
    Integer countAuditCheckRecord(@Param("branchIds")List<Integer> branchIds,@Param("auditStatus")Integer auditStatus);
}
